#include "rgb_mode.h"
#include <stddef.h>
#include <stdint.h>

/* 用于记录 RGB 彩灯的个数 */
static int g_led_cnt = 0;
static int g_frm_cnt = 0;

/**
 * @brief 获取动画一共有多少帧，彩灯数量不同对应的动画帧数量也不同
 * @param led_cnt 彩灯个数
 * @return int 返回该动画模式下，有多少帧
 */
int rgb_all_off_frame_count_get(int led_cnt)
{
	g_led_cnt = led_cnt;
	g_frm_cnt = 1;
	return g_frm_cnt;
}

/**
 * @brief 设置所有的 RGB 全部熄灭
 * @param led_cnt 彩灯个数，彩灯数量不同对应的动画帧数量也不同
 * @param frm_num 获取第几帧的数据
 * @param frm_buf 用于返回帧数据
 */
int rgb_all_off_frame_get(rgb_anim_t* anim, uint32_t* frm_buf)
{
	int i = 0;

	/* 参数有效性校验 */
	if (NULL == anim) {
		return -1;
	}

	if (anim->led_cnt != g_led_cnt) {
		return -1;
	}

	if (anim->frm_num < 0 || anim->frm_num >= g_frm_cnt) {
		return -1;
	}

	if (NULL == frm_buf) {
		return -1;
	}

	for (i = 0; i < g_led_cnt; i++) {
		*(frm_buf + i) = 0x000000;
	}

	return 0;
}